class Solution {
public:
	int f(int x){
		static int f0[]={0,0,1,1,2,0,3,1,1,0,3,3,2,2,4,0,5,2,2,3,3,0,1,1,3,0,2,1,1,0,4,5,2,7,
						 4,0,1,1,2,0,3,1,1,0,3,3,2,2,4,4,5,5,2,3,3,0,1,1,3,0,2,1,1,0,4,5,3,7},
				   f1[]={4,8,1,1,2,0,3,1,1,0,3,3,2,2,4,4,5,5,9,3,3,0,1,1,3,0,2,1,1,0,4,5,3,7};
		return x<68?f0[x]:f1[x%34];
	}
	bool canWin(const string &s) {
		int n=s.size(),ans=0;
		for (int i=0,c=0;i<n;++i){
			c+=(s[i]=='+');
			if ((i==n-1||s[i+1]=='-')&&c)ans^=f(c),c=0;
		}
		return ans;
	}
};

